class EdgeKernel
{
public:
    virtual double Evaluate(const Edge &e0, const Edge &e1) const = 0;
};

class EdgeKernelLabeled : public EdgeKernel
{
public:
    double Evaluate(const Edge &e0, const Edge &e1) const;
};